Typically, memory programming can be divided into two categories: single cell program and page program. The former relies on iterative program-verify cycle to ensure that the cell metric is within the target range. The latter programs the whole page of memory cells before the verifications.
However, for a phase change memory (PCM) that suffers resistance drift effect, its cell resistance may vary with time. This resistance variation may cause the verified cell resistance to be an inaccurate representation of the final resistance in single cell program or page program and widens the final resistance distribution.
Therefore, there is a need to provide a memory programming technique that is capable of alleviating the resistance drift effects among the memory cells and improving the data reliability.